package org.dromara.learning_xq.controller;

import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.dromara.learning_xq.config.Result;
import org.dromara.learning_xq.entity.AsChapterContent;
import org.dromara.learning_xq.service.AsChapterContentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

@RequestMapping("/asChapterContent")
@RestController
@Tag(name = "章节")
public class AsChapterContentController {

    @Autowired
    private AsChapterContentService asChapterContentService;


    // 使用 @PostMapping 注解标记这是一个处理 POST 请求的方法，路径为 /insertAsChapterContent
// 使用 @Operation 注解对方法进行描述，summary 参数用于指定方法的摘要信息
    @PostMapping("/insertAsChapterContent")
    @Operation(summary = "批量插入章节内容")
    public ResponseEntity<Map<String, Object>> insertAsChapterContent(@RequestBody List<AsChapterContent> asChapterContentList) {
        // 调用 asChapterContentService 的 insertAsChapterContent 方法批量插入章节内容，返回操作是否成功的标志
        boolean isSuccess = asChapterContentService.insertAsChapterContent(asChapterContentList);

        // 创建一个用于返回的响应体
        Map<String, Object> response = new HashMap<>();
        // 根据批量插入操作是否成功，向响应体中添加不同的消息和状态
        if (isSuccess) {
            response.put("message", "章节内容批量插入成功");
            response.put("status", "success");
            // 批量插入成功时，使用 200 状态码返回响应体
            return ResponseEntity.ok(response);
        } else {
            response.put("message", "章节内容批量插入失败");
            response.put("status", "failure");
            // 批量插入失败时，使用服务器内部错误状态码返回响应体
            return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(response);
        }
    }


    // 使用 @PostMapping 注解标记这是一个处理 POST 请求的方法，路径为 /insertAsChapterContent
// 使用 @Operation 注解对方法进行描述，summary 参数用于指定方法的摘要信息
    @PostMapping("/updateAsChapterContent")
    @Operation(summary = "更新插入章节内容")
    public ResponseEntity<Map<String, Object>> updateAsChapterContent(@RequestBody AsChapterContent asChapterContent) {
        // 调用 asChapterContentService 的 insertAsChapterContent 方法批量插入章节内容，返回操作是否成功的标志
        boolean isSuccess = asChapterContentService.updateAsChapterContent(asChapterContent);

        // 创建一个用于返回的响应体
        Map<String, Object> response = new HashMap<>();
        // 根据批量插入操作是否成功，向响应体中添加不同的消息和状态
        if (isSuccess) {
            response.put("message", "章节内容更新成功");
            response.put("status", "success");
            // 批量插入成功时，使用 200 状态码返回响应体
            return ResponseEntity.ok(response);
        } else {
            response.put("message", "章节内容更新失败");
            response.put("status", "failure");
            // 批量插入失败时，使用服务器内部错误状态码返回响应体
            return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(response);
        }
    }


    @GetMapping("/tree")
    @Operation(summary = "查询章程")
    public AsChapterContent getTree() {
        return asChapterContentService.getTree();
    }

}
